package com.example.demo.controller;

import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.dao.CustomerRepository;
import com.example.demo.entity.Customer;

@RestController
@RequestMapping("/Customer")
public class CustomerContorller {
	
	@Autowired
	CustomerRepository customerRepository;
	
	
	@PostMapping("/Save")
	/**
	 * 保存保存用户信息（分三种情况）customerRepository.save(T)：
	 * 
	 * 1.传了ID（主键）值，如果数据库中没有该ID值的元组，则创建一个元组保存数据；
	 * 2.传了ID（主键）值，如果数据库中有该ID值的元组，首先将传入的数据与数据库内的数据做比较，若一样则不作任何动作，若不一样则更新改元组，不会创建新的元组。
	 * 3.没有传ID（主键）值，会直接在数据库中创建一个新的元组保存该数据。
	 * 在实际情况中，我们一般不希望第三种情况出现，所以一定要传ID值，
	 * @param customer
	 * @return
	 */
	public String Save(Customer customer) {
		
		customerRepository.save(customer);
		System.out.println("保存成功");
		
		return "保存成功";
	}
	
	@GetMapping("/DeleteById")//删除一个的用户
	public String DeleteById(int id) {
		
		customerRepository.deleteById(id);
		System.out.println("通过ID删除成功");
		
		return "该用户删除成功";
	}
	
	@GetMapping("/DeleteAll")//删除全部的用户
	public String DeleteAll() {
		
		customerRepository.deleteAll();
		System.out.println("全部用户删除成功");
		
		return "全部删除成功";
	}
	
	@GetMapping("/SelectById")//通过ID查询用户
	public Customer SelectById(int id) {   
		Optional<Customer> optional= customerRepository.findById(id);//findById返回一个optional对象，该对象可以判断返回值是否为空
		//optional.isPresent()=true表示获取到了值，使用optional.get();可以获得数据库查询的数据
		if(optional.isPresent()) {
			Customer customer= optional.get();
			return customer;
		}else {
			System.out.println("没有该用户");
			return null;
		}
	}
	
	@GetMapping("/FindGreaterThan")
	public List<Customer> FindOne(int id){
		List<Customer> customers=customerRepository.findGreaterThan(id);
		return customers;
	}
	
	@GetMapping("/SelectAll")//查询全部
	public List<Customer> SelectAll(){
		
		List<Customer> customers=customerRepository.findAll();
		
		return customers;
	}
//	
//	@GetMapping("/SelectA")//查询全部
//	public List<Customer> SelectAll(){
//		
//		List<Customer> customers=customerRepository.findAll();
//		
//		return customers;
//	}



}
